//package com.juyu.miliao.scheduler.service;
//
//import java.awt.image.BufferedImage;
//import java.io.InputStream;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//import javax.annotation.Resource;
//import javax.imageio.ImageIO;
//
//import org.apache.commons.codec.digest.DigestUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.data.redis.core.StringRedisTemplate;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import com.juyu.miliao.common.netease.NetEaseCloudUserService;
//import com.juyu.miliao.scheduler.cache.AppkeyCache;
//import com.juyu.miliao.scheduler.cache.HostMessageCache;
//import com.juyu.miliao.scheduler.dao.mysql.UserInfoDao;
//import com.juyu.miliao.scheduler.domin.HostMessage;
//import com.juyu.miliao.scheduler.domin.User;
//
//import net.sf.json.JSONObject;
//
//@Component
//public class UserMessageLoopCommon {
//	@Resource
//	private StringRedisTemplate stringRedisTemplate;
//	@Resource
//	private UserInfoDao userInfoDao;
//
//	private final Logger logger = LoggerFactory.getLogger(UserMessageLoopCommon.class);
//
//	// 10秒发送一次消息
//	@Scheduled(fixedDelay = 1000 * 10, initialDelay = 1000 * 15)
//	public void userMessageLoopCommonOne() throws Exception {
//		String nowDateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//		logger.info("定时任务userMessageLoopCommonOne开始：time={}", nowDateTime);
//		Map<Object, Object> map = stringRedisTemplate.opsForHash().entries("userMessageLoopCommonOne");
//		map.forEach((key, value) -> {
//			JSONObject jasonObject = JSONObject.fromObject(value.toString());
//			Map jsonMap = (Map) jasonObject;
//			int wordsNum = Integer.parseInt(jsonMap.get("wordsNum").toString());
//			int pictureNum = Integer.parseInt(jsonMap.get("pictureNum").toString());
//			// 获取1个随机主播
//			List<Integer> userIds = new ArrayList<>();
//			List<User> userList = userInfoDao.getUserListRand(10, userIds);
//			User user = userList.get((int) (Math.random() * userList.size()));
//			if (wordsNum > 0) { // 文字没发完 ，发文字
//				List<HostMessage> wordList = HostMessageCache.INSTANCE.getHostMessageList(1);
//				int wordsNumCount = Integer.parseInt(AppkeyCache.INSTANCE.getAppkey("missageOneWords").getValue());
//				JSONObject body = new JSONObject();
//				body.put("msg", wordList.get(wordsNumCount - wordsNum).getMessage());
//				try {
//					String temp = NetEaseCloudUserService.getSendMsg(Integer.parseInt(key + ""), user.getUserId(), 0,
//							body.toString());
//					if (!temp.substring(temp.indexOf("code") + 6, temp.indexOf("code") + 9).equals("200"))
//						logger.error("发送普通消息异常-云信：userId={},message={}", key, temp);
//				} catch (Exception e) {
//					logger.error("发送普通消息异常：userId={},error={}", key, e);
//				}
//				wordsNum = wordsNum - 1;
//			} else { // 文字发完了 发图片
//				List<HostMessage> picList = HostMessageCache.INSTANCE.getHostMessageList(2);
//				int pictureNumCount = Integer.parseInt(AppkeyCache.INSTANCE.getAppkey("missageOnePicture").getValue());
//
//				JSONObject body = new JSONObject();
//				body.put("name", System.currentTimeMillis());// 图片name
//				try {
//					URL url = new URL(picList.get(pictureNumCount - pictureNum).getMessage());
//					HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//					InputStream in = conn.getInputStream();
//					BufferedImage sourceImg = ImageIO.read(in);
//					int w = sourceImg.getWidth();
//					int h = sourceImg.getHeight();
//					body.put("md5", DigestUtils.md5Hex(in));// 图片文件md5
//					body.put("url", picList.get(pictureNumCount - pictureNum).getMessage());
//					String[] temp = picList.get(pictureNumCount - pictureNum).getMessage().split("\\.");
//					body.put("ext", temp[temp.length - 1]);
//					body.put("w", w);
//					body.put("h", h);
//					// 根据响应获取文件大小
//					body.put("size", conn.getContentLength());
//				} catch (Exception e1) {
//					logger.error("发送普通消息异常-md5转换错误：userId={},error={}", key, e1);
//				}
//				try {
//					String temp = NetEaseCloudUserService.getSendMsg(Integer.parseInt(key + ""), user.getUserId(), 1,
//							body.toString());
//					if (!temp.substring(temp.indexOf("code") + 6, temp.indexOf("code") + 9).equals("200"))
//						logger.error("发送普通消息异常-云信：userId={},message={}", key, temp);
//				} catch (Exception e) {
//					logger.error("发送普通消息异常-系统：userId={},error={}", key, e);
//				}
//				pictureNum = pictureNum - 1;
//			}
//
//			// 先删除数据、如果没发完再增加更新后的redis
//			stringRedisTemplate.opsForHash().delete("userMessageLoopCommonOne", key);
//			if (wordsNum > 0 || pictureNum > 0) {
//				JSONObject json = new JSONObject();
//				json.put("wordsNum", wordsNum);
//				json.put("pictureNum", pictureNum);
//				stringRedisTemplate.opsForHash().put("userMessageLoopCommonOne", key, json.toString());
//			}
//		});
//		logger.info("定时任务userMessageLoopCommonOne结束：time={}",
//				LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//	}
//
////	 10秒发送一次消息
//	@Scheduled(fixedDelay = 1000 * 10, initialDelay = 1000 * 15)
//	public void userMessageLoopCommonFifteen() throws Exception {
//		String nowDateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//		logger.info("定时任务userMessageLoopCommonFifteen开始：time={}", nowDateTime);
//		Map<Object, Object> map = stringRedisTemplate.opsForHash().entries("userMessageLoopCommonFifteen");
//		map.forEach((key, value) -> {
//			JSONObject jasonObject = JSONObject.fromObject(value.toString());
//			Map jsonMap = (Map) jasonObject;
//			int wordsNum = Integer.parseInt(jsonMap.get("wordsNum").toString());
//			int pictureNum = Integer.parseInt(jsonMap.get("pictureNum").toString());
//
//			// 获取1个随机主播
//			List<Integer> userIds = new ArrayList<>();
//			List<User> userList = userInfoDao.getUserListRand(10, userIds);
//			User user = userList.get((int) (Math.random() * userList.size()));
//			// 十五分钟
//			if (wordsNum > 0) { // 发文字
//				List<HostMessage> wordList = HostMessageCache.INSTANCE.getHostMessageList(1);
//				int wordsNumCount = Integer.parseInt(AppkeyCache.INSTANCE.getAppkey("missageFifteenWords").getValue());
//				wordsNumCount = wordsNumCount
//						+ Integer.parseInt(AppkeyCache.INSTANCE.getAppkey("missageOneWords").getValue());
//				JSONObject body = new JSONObject();
//				body.put("msg", wordList.get(wordsNumCount - wordsNum).getMessage());
//				try {
//					String temp = NetEaseCloudUserService.getSendMsg(Integer.parseInt(key + ""), user.getUserId(), 0,
//							body.toString());
//					if (!temp.substring(temp.indexOf("code") + 6, temp.indexOf("code") + 9).equals("200"))
//						logger.error("发送普通消息异常-云信：userId={},message={}", key, temp);
//				} catch (Exception e) {
//					logger.error("发送普通消息异常：userId={},error={}", key, e);
//				}
//				wordsNum = wordsNum - 1;
//			} else { // 发图片
//				List<HostMessage> picList = HostMessageCache.INSTANCE.getHostMessageList(2);
//				int pictureNumCount = Integer
//						.parseInt(AppkeyCache.INSTANCE.getAppkey("missageFifteenPicture").getValue());
//				pictureNumCount = pictureNumCount
//						+ Integer.parseInt(AppkeyCache.INSTANCE.getAppkey("missageOnePicture").getValue());
//				JSONObject body = new JSONObject();
//				body.put("name", System.currentTimeMillis());// 图片name
//				try {
//					URL url = new URL(picList.get(pictureNumCount - pictureNum).getMessage());
//					HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//					InputStream in = conn.getInputStream();
//					BufferedImage sourceImg = ImageIO.read(in);
//					int w = sourceImg.getWidth();
//					int h = sourceImg.getHeight();
//					body.put("md5", DigestUtils.md5Hex(in));// 图片文件md5
//					body.put("url", picList.get(pictureNumCount - pictureNum).getMessage());
//					String[] temp = picList.get(pictureNumCount - pictureNum).getMessage().split("\\.");
//					body.put("ext", temp[temp.length - 1]);
//					body.put("w", w);
//					body.put("h", h);
//					// 根据响应获取文件大小
//					body.put("size", conn.getContentLength());
//				} catch (Exception e1) {
//					logger.error("发送普通消息异常-md5转换错误：userId={},error={}", key, e1);
//				}
//				try {
//					String temp = NetEaseCloudUserService.getSendMsg(Integer.parseInt(key + ""), user.getUserId(), 1,
//							body.toString());
//					if (!temp.substring(temp.indexOf("code") + 6, temp.indexOf("code") + 9).equals("200"))
//						logger.error("发送普通消息异常-云信：userId={},message={}", key, temp);
//				} catch (Exception e) {
//					logger.error("发送普通消息异常-系统：userId={},error={}", key, e);
//				}
//				pictureNum = pictureNum - 1;
//			}
//			// 先删除数据、如果没发完再增加更新后的redis
//			stringRedisTemplate.opsForHash().delete("userMessageLoopCommonFifteen", key);
//			if (wordsNum > 0 || pictureNum > 0) {
//				JSONObject json = new JSONObject();
//				json.put("wordsNum", wordsNum);
//				json.put("pictureNum", pictureNum);
//				stringRedisTemplate.opsForHash().put("userMessageLoopCommonFifteen", key, json.toString());
//			}
//		});
//		logger.info("定时任务userMessageLoopCommonFifteen结束：time={}",
//				LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//	}
//}
